package UI

import (
	. "SGEngine"
	//	"fmt"
	"github.com/gl"
)

type UITransfrom struct {
	Transfrom
	pos Vec3
}

func (t *UITransfrom) TransfromNode() {

	uinode := t.Mnode.(*UINode)
	oldX, oldY, oldZ := t.GetPosition()
	P := t.GetPositionV()
	oldX = P.X - t.Size().X*0.5
	oldX += (1 - uinode.AnchorPoint.X) * t.Size().X

	oldY = P.Y - t.Size().Y*0.5
	oldY += (1 - uinode.AnchorPoint.Y) * t.Size().Y
	t.GetMat()[12] = oldX
	t.GetMat()[13] = oldY
	t.GetMat()[14] = oldZ

	gl.MultMatrixd((*[16]float64)(t.Mat))
	gl.Rotated(t.R, t.Rdir.X, t.Rdir.Y, t.Rdir.Z)
	if t.IsSizeScale() == true {
		gl.Scaled(t.Size().X, t.Size().Y, t.Size().Z)
	}
	//fmt.Println(uinode)

}

func (t *UITransfrom) EndTransfromNode() {
	t.GetMat()[12] = t.pos.X
	t.GetMat()[13] = t.pos.Y
	t.GetMat()[14] = t.pos.Z
	gl.LoadMatrixd((*[16]float64)(t.Mat))
	gl.Rotated(t.R, t.Rdir.X, t.Rdir.Y, t.Rdir.Z)
}

func (u *UITransfrom) GetPosition() (float64, float64, float64) {
	return u.pos.X, u.pos.Y, u.pos.Z
}

func (u *UITransfrom) GetPositionV() Vec3 {
	return u.pos
}
func (u *UITransfrom) SetPosition(x, y, z float64) {
	u.pos.X = x
	u.pos.Y = y
	u.pos.Z = z
}
func (u *UITransfrom) SetPositionV(v3 Vec3) {
	u.pos = v3
}
